#ifndef SHM_LOCK_FREE_QUEUE_H
#define SHM_LOCK_FREE_QUEUE_H

#include <stdbool.h>
#include <stdatomic.h>
#include <sys/types.h>

#define SHM_NAME "/shm_lock_free_queue"
#define QUEUE_SIZE 10  // 环形队列的大小

typedef struct {
    size_t buf_size;  // 每个缓冲区的大小
    _Atomic int head; // 队列头（原子变量）
    _Atomic int tail; // 队列尾（原子变量）
    _Atomic int version; // 队列版本号
    char data[QUEUE_SIZE][0];  // 动态数据区域
} ShmLockFreeQueue;

// 初始化共享内存和无锁队列
bool shm_lock_free_queue_init(size_t buf_size);

// 写入数据到无锁队列
bool shm_lock_free_queue_write(const char* data, size_t size);

// 从无锁队列读取数据
bool shm_lock_free_queue_read(char* data, size_t size);

// 销毁共享内存
void shm_lock_free_queue_destroy();

#endif // SHM_LOCK_FREE_QUEUE_H
